/*
 * transaccionesErradas.java
 *
 * Created on 15 de abril de 2007, 12:44 AM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
package administrador;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.RoundingMode;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Date;
import javax.print.*;
import javax.print.attribute.DocAttributeSet;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;

/**
 *
 * @author daniel1
 */
public class transaccionesErradas {

    Archivo facturaTXT;
    String archNom;
    String num_Fact;
    //Datos del Cliente:
    String ClienteRucCI = "";
    String ClienteNom = "";
    String ClienteTlf = "";
    String ClienteDir = "";
    //Tipo de Documento:
    String documento;
    //Informacion de la Empresa
    String NombreRS = "";
    String RucEmisor = "";
    String DireccionLocal = "";
    String AutSRI = "";
    String FechaCaducidad = "";
    String NombreDueno = "";
    String codEmpresa = "";
    String codTerminale = "";
           NumberFormat nf = NumberFormat.getNumberInstance();
    DecimalFormat dec=(DecimalFormat)nf;
    /** Creates a new instance of transaccionesErradas */
    public transaccionesErradas(String numFact, String ClienteRucCI, String ClienteNom, String ClienteTlf, String ClienteDir, String documento) {
    }

    public transaccionesErradas(String codEmpresa, String codTerminale, String numFact, String ClienteRucCI, String ClienteNom, String ClienteTlf, String ClienteDir, String documento, String NombreRS, String NombreDueno, String RucEmisor, String DireccionLocal, String AutSRI, String FechaCaducidad) {
       
 
    dec.applyPattern("###.##");
    nf.setMaximumFractionDigits(2);
    nf.setRoundingMode(RoundingMode.HALF_UP);
        
        //Defino tipo de Documento:
        this.documento = documento;

        //Defino Parametros Factura y Datos del Cliente
        this.ClienteRucCI = ClienteRucCI;
        this.ClienteNom = ClienteNom;
        this.ClienteTlf = ClienteTlf;
        this.ClienteDir = ClienteDir;

        this.num_Fact = numFact;

        //Informacion de la  empresa
        this.NombreRS = "                " + NombreRS + "\n" +
                "         " + NombreDueno + "    ";
        this.RucEmisor = RucEmisor;
        this.DireccionLocal = DireccionLocal;
        this.AutSRI = AutSRI;
        this.FechaCaducidad = FechaCaducidad;
        this.NombreDueno = NombreDueno;
        this.codEmpresa = codEmpresa;
        this.codTerminale = codTerminale;
        //Defino el archivo e inserto la cabecera de la Factura a transaccionesErradas:
        //String fecha=new java.sql.Date(System.currentTimeMillis()).toString();
        java.util.Date fecha=new java.util.Date();
        fecha.getTime();
        facturaTXT = new Archivo();
        
        String fechaAct=new java.sql.Date(System.currentTimeMillis()).toString().replaceAll("-","");
        String horaAct=new java.sql.Time(System.currentTimeMillis()).toString().replaceAll(":","");
        
        archNom = "transaccionesErradas/" +fechaAct+"_"+horaAct +"_"+ documento + "_Errada_" + numFact + ".txt";
        facturaTXT.crearArchivo(archNom);
        facturaTXT.escriboLineaArchivo(archNom, cabeceraFactura());
    }

    public void insertoDetImp(String codigoPro, String NombreImp, String cantProVendido, String precio, String subTot) {
        //Inserto en el archivo para la impresion:----------
        String tab1 = " ";
        if (NombreImp.length() > 11) {
            NombreImp = NombreImp.substring(0, 10);
        }
        if (NombreImp.length() > 5 && NombreImp.length() <= 10) {
            tab1 = "\t";
        } else if (NombreImp.length() < 5) {
            tab1 = "\t";
        }



        String tab2 = " ";
        if (codigoPro.length() <= 5) {
            tab2 = "\t";

        } else {
            tab2 = " ";
            tab1 = "";
        }
        String detalleImp = codigoPro + tab2 + NombreImp + tab1 + cantProVendido + "  " + precio + "  " + subTot;
        escriboFact(detalleImp);
    }

    public void escriboFact(String dataIns) {
        System.out.println("Los datos a escribir son:" + dataIns);
        facturaTXT.escriboLineaArchivo(archNom, dataIns);
    }

    public void realizaImprecion() throws PrintException {


        try {
            DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
            PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
            PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);

            PrintService service = printService[this.sacoImpresora(printService)];

            // Open the image file
            InputStream is = new BufferedInputStream(new FileInputStream(archNom));
            // Create the print job
            DocPrintJob job = service.createPrintJob();
            DocAttributeSet das = new HashDocAttributeSet();
            Doc doc = new SimpleDoc(is, flavor, das);

            // Monitor print job events
            PrintJobWatcher pjDone = new PrintJobWatcher(job);

            // Print it
            job.print(doc, pras);

            // Wait for the print job to be done
            pjDone.waitForDone();

            // It is now safe to close the input stream
            is.close();
       //} catch (PrintException e) {
        } catch (IOException e) {
        }
    }

    public int sacoImpresora(PrintService Impresoras[]) {
        //Busco la Impresora:
        int Epson = 0;
        int numb = 0;
        while (numb < Impresoras.length) {
            if (Impresoras[numb].getName().toString().startsWith("EPSON")) {
                Epson = numb;
            }
            numb++;
        }
        return Epson;
    }

    public String cabeceraFactura() {
        Date now = new Date();
        //Defino la Cabeceras:
        //*********************Cabecera de Factura******************************
        String cabecera;
        String DenominacionDoc = "*";

        System.out.println("El Documento a transaccionesErradas es: " + documento);
        if (documento.equals("Factura")) {
            DenominacionDoc = "   FACTURA ERRADA  ";
        }
        if (documento.equals("Nota de Venta")) {
            DenominacionDoc = "NOTA DE VENTA ERRADA";
        }
        if (documento.equals("Nota de Debito")) {
            DenominacionDoc = "NOTA DE DEBITO ERRADA";
        }
        if (documento.equals("Nota de Credito")) {
            DenominacionDoc = "NOTA DE CREDITO ERRADA";
        }
        if (documento.equals("Factura de Compras")) {
            DenominacionDoc = "FACTURA DE COMPRAS ERRADA";
        }
        if (documento.equals("Devolucion en Compras")) {
            DenominacionDoc = "DEVOLUCION COMPRAS ERRADA";
        }
        //genero los numeros de factura
        int contador = num_Fact.length();
        contador = 7 - contador;
        for (int i = 0; i < contador; i++) {
            num_Fact = "0" + num_Fact;
        }

        int contadorNE = codEmpresa.length();
        contadorNE = 3 - contadorNE;
        for (int i = 0; i < contadorNE; i++) {
            codEmpresa = "0" + codEmpresa;
        }

        int contadorNT = codTerminale.length();
        contadorNT = 3 - contadorNT;
        for (int i = 0; i < contadorNT; i++) {
            codTerminale = "0" + codTerminale;
        }
        //String codEmpresa,String codTerminale
        //String NumFactura="001-001-"+num_Fact;
        String NumFactura = codEmpresa + "-" + codTerminale + "-" + num_Fact;
        cabecera = "" + NombreRS + "\n" +
                "          Ruc:" + RucEmisor + "\n" +
                DireccionLocal + "\n" +
                "   AutSRI:" + AutSRI + " F.CAD:" + FechaCaducidad + "\n" +
                "            " + DenominacionDoc + "\n" +
                "         No.:" + NumFactura + "\n";

        //Datos del Cliente:

        String Fecha = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG).format(now);
        // String FormaPago="Contado";
        cabecera = cabecera +
                "Cliente Ruc/CI:" + ClienteRucCI + "  Tf:" + ClienteTlf + "\n" +
                "Nom:" + ClienteNom + "\n" +
                "Dir:" + ClienteDir + "\n" +
                Fecha + " " + "";
        //############################
        
        
        return cabecera;
    }
    
    public String pongoTitulos(String facturaTXT){
        facturaTXT = facturaTXT +
                "=====================================\n" +
                "Item      Nombre      Cant  Prec  Sub\n" +
                "=====================================";
       return facturaTXT;
    }

    public String pieFactura(String Subtotal, String Descuento, String Iva, String total) {
        String Pie = "";
        double Sub_Desc = Double.parseDouble(Subtotal) - Double.parseDouble(Descuento);
        if (documento.equals("Factura")) {
            Pie = "=========================================\n" +
                    "Subtotal   =" + Subtotal + "\n" +
                    "Descuento  =" + Descuento + "\n" +
                    "Sub-Desc  =" +nf.format(Sub_Desc).replaceAll(",",".") + "\n" +
                    "Iva        =" + Iva + "\n" +
                    "TOTAL PAG  =" + total;
        }
        if (documento.equals("Nota de Venta")) {
            Pie = "=========================================\n" +
                    "Descuento  =" + Descuento + "\n" +
                    "TOTAL PAG  =" + total;
        }
        if (documento.equals("Nota de Debito")) {
            Pie = "=========================================\n" +
                    "Subtotal   =" + Subtotal + "\n" +
                    "Iva        =" + Iva + "\n" +
                    "TOTAL PAG  =" + total;
        }
        if (documento.equals("Nota de Credito")) {
            Pie = "=========================================\n" +
                    "Subtotal   =" + Subtotal + "\n" +
                    "Iva        =" + Iva + "\n" +
                    "TOTAL PAG  =" + total;
        }
        if (documento.equals("Factura de Compras")) {
            Pie = "=========================================\n" +
                    "Subtotal   =" + Subtotal + "\n" +
                    "Descuento  =" + Descuento + "\n" +
                    "Sub-Desc  =" + nf.format(Sub_Desc).replaceAll(",",".")  + "\n" +
                    "Iva        =" + Iva + "\n" +
                    "TOTAL PAG  =" + total;
        }
        if (documento.equals("Devolucion en Compras")) {
            Pie = "=========================================\n" +
                    "Subtotal   =" + Subtotal + "\n" +
                    "Iva        =" + Iva + "\n" +
                    "TOTAL PAG  =" + total;
        }
        return Pie;
    }

    public Archivo getArchivo() {
        return facturaTXT;
    }

    public void setArchivo(Archivo archivocp) {
        facturaTXT = archivocp;
    }
}

